#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
第一行注释是为了告诉Linux/OS X系统，这是一个Python可执行程序，Windows系统会忽略这个注释；
第二行注释是为了告诉Python解释器，按照UTF-8编码读取源代码，否则，你在源代码中写的中文输出可能会有乱码。
'''

'''函数学习'''

#定义函数
def add(x,y):
	return x+y

	
print add(1,2)

def list(L):
	for x in L:
		print x

list(['a','b','c','d','e'])


def judgeAge(age):
	if age>=20:
		print u'青年'
	elif age>=40:
		print u'中年'
	else:
		print u'老年'

		
judgeAge(20)

#如果想定义一个什么事也不做的空函数，可以用pass语句：
def doNothing():
	pass

doNothing()

#返回多个值的函数（以元组形式返回）
def getPoint(x,y):
	mx=x*10
	my=y*10
	return mx,my

print getPoint(10,20)
print getPoint(10,20)[0]


#默认参数，不传时，使用默认设置的
def sqrt(x,n=2):
	return x**n  #x**n意思是（x的n次方）
	
print sqrt(2)
print sqrt(2,3)
print sqrt(2,4)

#可变参数 *num，可传可不传，这些可变参数在函数调用时自动组装为一个tuple,类似于java中的  String... s

def notsure(*args):
	sum=0
	for i in args:
		sum+=i
	return sum
	
print notsure()
print notsure(1)
print notsure(1,2,3,4,5)

number=[4,5,6]
# *number作为可变参数
print notsure(*number)

#关键字参数 **key 可传可不传 这些关键字参数在函数内部自动组装为一个dict
def keyParam(name,age,**kw):
	print 'name='+name,'age='+str(age),'kw=',kw
	
keyParam('tttt',21)
keyParam('tzj',25,height=175,city='shenzhen')

dic={'height':180,'city':'chengdu'}

keyParam('tsq',22,**dic)

'''参数定义的顺序必须是：必选参数、默认参数、可变参数和关键字参数。'''
	